﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Ext.Net;
using Sio.Mdm.Entities;
using Sio.Mdm.Client;
using Sio.Mdm.BF.Idm;
using Sio.Mdm.BF.Sifranti;
using Sio.Mdm.Types.Database;
using Sio.Mdm.Types;
using Sio.Mdm.BF.Ldap;
using System.Collections.Generic;

namespace Sio.Mdm.Web.Instalacija
{
	public partial class PredmetiSeznam : Controls.Page
	{
		#region Definitions
		public interface SplosnoRowEditData
		{
			int PredmetId { get; set; }
			string PolnoIme { get; set; }
			string Kratica { get; set; }
			string ImeZaIzpis { get; set; }
			DateTime VeljavnostOd { get; set; }
			DateTime VeljavnostDo { get; set; }
		}
		#endregion

		#region OnLoad
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);
			NaloziSeznam();
		}
		#endregion

		#region Editing
		protected void UrediPodatke(Object sender, DirectEventArgs e)
		{
			SplosnoRowEditData EditData = XML.Deserialize<SplosnoRowEditData>(e.ExtraParams["data"]);
			if (EditData.PredmetId == -99)
			{
				Predmet ent = EntityFactory.CreateInstance<Predmet>();
				ent.PolnoIme = EditData.PolnoIme;
				ent.Kratica = EditData.Kratica;
				ent.ImeZaIzpis = EditData.ImeZaIzpis;
				ent.VeljavnostOd = EditData.VeljavnostOd;
				ent.VeljavnostDo = EditData.VeljavnostDo;
				ent.Update();
			}
			else if (EditData.PredmetId > 0)
			{
				Predmet ent = EntityFactory.LoadEntity<Predmet>
				 (new Filter<Predmet>().Where(r => r.PredmetId == EditData.PredmetId)
					);

				if (ent.EntityState != EntityState.Unknown)
				{
					ent.PolnoIme = EditData.PolnoIme;
					ent.Kratica = EditData.Kratica;
					ent.ImeZaIzpis = EditData.ImeZaIzpis;
					ent.VeljavnostOd = EditData.VeljavnostOd;
					ent.VeljavnostDo = EditData.VeljavnostDo;
					ent.Update();
				}
				else
				{
					e.Success = false;
					X.Msg.Alert("Manjkajoči podatki", "Iskani zapis ne obstaja.").Show();
					return;
				}
			}
		}
		protected void OdstraniZapise(object sender, DirectEventArgs e)
		{
			List<int> deletedItems = e.GetIdList<int>("selected", "PredmetId");
			if (deletedItems.Count > 0)
			{
				EntityCollection<Predmet> col = new EntityCollection<Predmet>(
					new Filter<Predmet>().SelectByField(r => r.PredmetId, deletedItems.ToArray())
				);
				col.RemoveAll();
				col.Update();
			}
		}
		#endregion

		#region Private
		private void NaloziSeznam()
		{
			GridSplosniSeznam.LoadData<Predmet>(
				new Filter<Predmet>().Where(r => r.PredmetId != null).OrderBy(r => r.PolnoIme));
		}
		#endregion
	}
}
